package com.ty.model;

import com.google.common.collect.Maps;
import com.ty.utils.DataUtil;

import java.io.Serial;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * 与AI服务交互的数据结构
 * <p>
 *     可根据自己对接的AI服务接口，调整本类的结构 或 重新定义符合自己的数据结构
 * </p>
 *
 * @Author Tommy
 * @Date 2024/4/23
 */
public class TyMessage {

    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    private static Map<String, String> CAMERASN_DEVSERIAL_MAPPING = new HashMap<>() {

        @Serial
        private static final long serialVersionUID = -3614589229105346140L;

        {
            put("301", "J65450974"); // 大屏展示区
            put("701", "J65450991"); // 公司正门
            put("601", "J65450936"); // 前台
            put("501", "J65451004"); // 通道#1-后门
            put("201", "J65450995"); // 通道#2-餐厅
            put("101", "J65450945"); // 餐厅
            put("401", "J65450976"); // 办公区
        }
    };

    public static Map<String, Object> build(String cameraSN, String url) {
        Date now = new Date(System.currentTimeMillis());

        Map<String, Object> header = Maps.newHashMap();
        header.put("messageTime", now.getTime());
        header.put("messageId", messageId());

        Map<String, Object> body = Maps.newHashMap();
        body.put("channel", 1);
        body.put("devSerial", CAMERASN_DEVSERIAL_MAPPING.getOrDefault(cameraSN, cameraSN));
        body.put("alarmType", "TYMotionDetect");
        body.put("alarmTime", dateFormat.format(now));
        body.put("pictureList", new ArrayList() {
            {
                add(new HashMap<>() {
                    {
                        put("url", url);
                    }
                });
            }
        });

        Map<String, Object> msgMap = Maps.newHashMap();
        msgMap.put("header", header);
        msgMap.put("body", body);
        return msgMap;
    }

    public static String messageId() {
        return UUID.randomUUID().toString().replaceAll("\\-", "");
    }

    /*
     * 测试
     */
    public static void main(String[] args) {
        Map data = build("701", "http://tyc.vip/Changed/701/240423125153_0.653.jpg");
        String json = DataUtil.toJSON(data);
        System.out.println(json);
    }
}
